using System;
using Sinacor.Infra.UI.Common;
using System.Collections.ObjectModel;

namespace Sinacor.UI.Bovespa.ManutencaoOrdens.Model
{
    /// <summary>
    /// Modelo de tipo de Cliente
    /// </summary>
    [Serializable]
    public class Cliente : BaseModel 
    {

		private bool _administradoConcorrente;
		private string _apelido;
		private int? _broker;
        private bool _clienteBroker;
		private int? _codigo;
		private int? _codigoAssessor;
		private int? _codigoClienteInstitucional;
		private int? _codigoCustodiante;
		private int? _codigoGrupo;
		private string _complementoNome;
		private int? _digito;
		private string _nome;
        private string _nomeResumido;
		private string _nomeBroker;
		private bool _operaCarteiraPropria;
		private decimal? _percentualCorretagemPrincipal;
		private decimal? _percentualCorretagemTotal;
		private bool _pessoaVinculada;
		private bool _qualificado;
		private Model.Enum.TipoSituacao _situacao;
		private Model.Enum.TipoPessoa _tipoPessoa;


		public Cliente(){}

		public bool AdministradoConcorrente{
			get{
				return _administradoConcorrente;
			}
			set{
				_administradoConcorrente = value;
                OnPropertyChanged("AdministradoConcorrente");
			}
		}

		public string Apelido{
			get{
				return _apelido;
			}
			set{
				_apelido = value;
                OnPropertyChanged("Apelido");
			}
		}

		public int? Broker{
			get{
				return _broker;
			}
			set{
				_broker = value;
                OnPropertyChanged("Broker");
			}
		}

        public bool ClienteBroker
        {
            get
            {
                return this._clienteBroker;
            }
            set
            {
                this._clienteBroker = value;
                OnPropertyChanged("ClienteBroker");
            }
        }

		public int? Codigo{
			get{
				return _codigo;
			}
			set{
				_codigo = value;
                OnPropertyChanged("Codigo");
			}
		}

		public int? CodigoAssessor{
			get{
				return _codigoAssessor;
			}
			set{
				_codigoAssessor = value;
                OnPropertyChanged("CodigoAssessor");
			}
		}

		public int? CodigoClienteInstitucional{
			get{
				return _codigoClienteInstitucional;
			}
			set{
				_codigoClienteInstitucional = value;
                OnPropertyChanged("CodigoClienteInstitucional");
			}
		}

		public int? CodigoCustodiante{
			get{
				return _codigoCustodiante;
			}
			set{
				_codigoCustodiante = value;
                OnPropertyChanged("CodigoCustodiante");
			}
		}

		public int? CodigoGrupo{
			get{
				return _codigoGrupo;
			}
			set{
				_codigoGrupo = value;
                OnPropertyChanged("CodigoGrupo");
			}
		}

		public string ComplementoNome{
			get{
				return _complementoNome;
			}
			set{
				_complementoNome = value;
                OnPropertyChanged("ComplementoNome");
			}
		}

		public int? Digito{
			get{
				return _digito;
			}
			set{
				_digito = value;
                OnPropertyChanged("Digito");
			}
		}

		public string Nome{
			get{
				return _nome;
			}
			set{
				_nome = value;
                OnPropertyChanged("Nome");
			}
		}

        public string NomeResumido
        {
            get
            {
                return _nomeResumido;
            }
            set
            {
                _nomeResumido = value;
                SetValue<string>("NomeResumido", ref _nomeResumido, value);
            }
        }

		public string NomeBroker{
			get{
				return _nomeBroker;
			}
			set{
				_nomeBroker = value;
                OnPropertyChanged("NomeBroker");
			}
		}

		public bool OperaCarteiraPropria{
			get{
				return _operaCarteiraPropria;
			}
			set{
				_operaCarteiraPropria = value;
                OnPropertyChanged("OperaCarteiraPropria");
			}
		}

		public decimal? PercentualCorretagemPrincipal{
			get{
				return _percentualCorretagemPrincipal;
			}
			set{
				_percentualCorretagemPrincipal = value;
                OnPropertyChanged("PercentualCorretagemPrincipal");
			}
		}

		public decimal? PercentualCorretagemTotal{
			get{
				return _percentualCorretagemTotal;
			}
			set{
				_percentualCorretagemTotal = value;
                OnPropertyChanged("PercentualCorretagemTotal");
			}
		}

		public bool PessoaVinculada{
			get{
				return _pessoaVinculada;
			}
			set{
				_pessoaVinculada = value;
                OnPropertyChanged("PessoaVinculada");
			}
		}

		public bool Qualificado{
			get{
				return _qualificado;
			}
			set{
				_qualificado = value;
                OnPropertyChanged("Qualificado");
			}
		}

		public Enum.TipoSituacao Situacao{
			get{
				return _situacao;
			}
			set{
				_situacao = value;
                OnPropertyChanged("Situacao");
			}
		}

		public Enum.TipoPessoa TipoPessoa{
			get{
				return _tipoPessoa;
			}
			set{
				_tipoPessoa = value;
                OnPropertyChanged("TipoPessoa");
			}
		}

	}

}